-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
libmem: implement policy-agnostic memory allocation/accounting. #332
Conversation
d7744f7
to
6632815
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
....starting review. I could not yet follow through the whole path if it is or not possible that PreserveContainer requests can return zones different from originals. But if they do... for instance if a single zone of size 32 GB is the only zone that is allowed for two preserved-memory containers, each requesting 32 GB of RAM, then I'd still assume that whoever did this preservation must know what he is doing. If he prefers oom kill of his containers rather than letting them access memory out of the zone, then so be it, we won't touch pinning.
8dbbe4f
to
9f6da52
Compare
0a54715
to
d61ab79
Compare
3ed379c
to
515f99a
Compare
515f99a
to
59732a4
Compare
59732a4
to
0bb2c73
Compare
1b6292b
to
b03dd81
Compare
This will conflict if/when we merge containers#332/libmem. This will need to get dropped, rebased on latest main, the checked and fixed again. So I'll just keep it at the tip until then... Signed-off-by: Krisztian Litkey <[email protected]>
7461f05
to
015c985
Compare
Initial implementation of a policy agnostic memory accounting and allocation library. Signed-off-by: Krisztian Litkey <[email protected]>
Signed-off-by: Krisztian Litkey <[email protected]>
Add a brief description of libmem, its basic ideas and core concepts, as package level documentation. Signed-off-by: Krisztian Litkey <[email protected]>
Cut out the original memory accounting and allocation code. Plug in a libmem-based memory allocator instead. Signed-off-by: Krisztian Litkey <[email protected]>
Update unit tests after libmem conversion. Signed-off-by: Krisztian Litkey <[email protected]>
Plug in libmem-based memory allocation (and accounting). Signed-off-by: Krisztian Litkey <[email protected]>
Add support for per balloon type memory configuration and per container overrides using pod annotations. Pass configured or annotated memory types to libmem for allocation. TODO(klihub): per balloon configuration still missing (?) Co-authored-by: Krisztian Litkey <[email protected]> Signed-off-by: Krisztian Litkey <[email protected]>
Add first e2e tests for topology-aware policy memory allocation and type control. Co-authored-by: Krisztian Litkey <[email protected]> Signed-off-by: Krisztian Litkey <[email protected]>
"MEMTYPE=x create ..." in test scripts creates a guaranteed or burstable pod with "memory-type...: x" annotation effective for all containers in the pod. Signed-off-by: Antti Kervinen <[email protected]>
Adds fuzz test generator script, model and runner for topology-aware policy reliability tests on HBM+DRAM+PMEM platform. Signed-off-by: Antti Kervinen <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
Thank you for this huge work, @klihub!
I think we should take it in and start developing on top of it.
Yeah, I tend to think so, too. Then we'll need to fix bugs and polish the turd further as we go. I'm just unable to focus enough to get this into any better shape now. |
This patch series
topology-aware
policy with libmemballoons
policyFor a more detailed description of the main ideas, core concepts, and some high level
implementation details, see the included package documentation.
TODO items:
ensureNormalMemory()
during initial zone selectionRemaining questions related to this initial implementation: